/**
 * 中间件: 
 *      概念: 本质上是一个函数, 包含3个参数:request, response, next
 * 
 * 作用: 
 *      1) 执行任何代码
 *      2) 修改请求和响应对象
 *      3) 终结请求, 响应循环
 *      4) 调用堆栈中的下一个中间件或路由
 * 分类:
 *      1) 应用(全局)中间件(过滤非法的请求, 如防盗链)
 *          第一种写法: app.use((request, response, next) => {})
 *          第二种写法: 使用函数定义
 *      2) 第三种中间件(通过rpm下载的中间件, 例如body-parser)
 *          app.use(bodyParser.urlencoded({extended:true}))
 *      3) 内置中间件(express内部封装好的中间件)
 *          app.use(express.urlencoded({extended:true}))
 *          app.use(express.static("public"))
 *      4) 路由器中间件(Router)
 *          
 * 备注:
 *      在express中, 定义路由和中间件的时候, 根据定义的顺序(代码的顺序), 将定义的每一个中间件或者路由
 *      放在一个类似于数组的容器中, 当请求过来的时候, 依次容器中取出中间件和路由, 进行匹配, 如果匹
 *      配成功, 交由该路由或中间件处理 
 */